package com.kerwin.config;


import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

/*这个注解让配置类进入容器*/
@Configuration
public class CrossFilters {

/*注册过滤器对象到容器*/
@Bean
public FilterRegistrationBean corsFilter() {

    /*这个类导那个短的包*/
    /*这是个对象，用来设置参数，传到过滤器的里*/
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    /*别害怕，套起来了*/
    CorsConfiguration config = new CorsConfiguration();
    /*允许cookie*/
    config.setAllowCredentials(true);
    /*允许的跨域连接*/
    config.addAllowedOrigin("http://localhost:8081");
    /*允许的请求头*/
    config.addAllowedHeader("*");
    /*允许的请求方法*/
    config.addAllowedMethod("*");
    /*暴露出去的请求头，为了token*/
    config.addExposedHeader("admin-token");
    /*多长时间内可以不再验证跨域配置  这个是半个小时*/
    config.setMaxAge(300000L);
    /*把参数设置到参数对象*/
    source.registerCorsConfiguration("/**", config);
    //注册CorsFilter到servlet
    FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
    /*这个过滤器第几个执行*/
    bean.setOrder(0);
    /*应该是反射调用注册bean的方法 把返回的bean 放到容器里面*/
    return bean;
}

}
